#ifndef PROTOCOL_H
#define PROTOCOL_H


// 协议魔数
#define MAGIC_NUMBER 0xA1B2C3D4

#define HEADER_LENGTH sizeof(protocol_header_t)

// 命令类型枚举
typedef enum
{
    CMD_USER,
    CMD_AUTH,       // 认证
    CMD_ECHO,       // 回显测试
    CMD_LS_REQ,     // 列出文件
    CMD_LS_RESP,    //
    CMD_CD_REQ,     // 改变目录
    CMD_CD_RESP,    //
    CMD_PWD_REQ,    // 显示当前目录
    CMD_PWD_RESP,   //
    CMD_RMOVE_REQ,  // 删除文件
    CMD_RMOVE_RESP, //
    CMD_MKDIR_REQ,  // 创建目录
    CMD_MKDIR_RESP, //
    CMD_RMDIR_REQ,  // 删除目录
    CMD_RMDIR_RESP, //
    CMD_GETS_REQ,   // 下载文件
    CMD_GETS_RESP,  //
    CMD_PUTS_REQ,   // 上传文件
    CMD_PUTS_RESP,  //
    CMD_RESPONSE    // 服务器响应
} Command;

// 协议头结构
typedef struct protocol_header_s
{
    int magic;       // 魔数
    int command;     // 命令类型
    int data_length; // 后续数据长度
    // int request_id;  // 请求ID
} protocol_header_t;

#endif
